"""
python 命令行参数
在开发命令行工具或需要从命令行接收用户输入的Python程序中，处理命令行参数是一项常见任务。
为了简化这一过程，Python内置了argparse模块，它能够帮助我们定义和解析命令行参数，并提供用户友好的命令行界面。
"""


import argparse


def cmdargs_parse(cmdargs=None):

    ## 创建参数解析器
    parser = argparse.ArgumentParser(
        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
        description="Python 命令行参数解析程序"
    )

    ## 添加位置参数(position arguments)
    parser.add_argument("arg1", type=int, help="位置参数")
    parser.add_argument("arg2", type=str, help="位置参数")

    ## 添加可选参数(optional arguments)
    parser.add_argument("--opt1", type=str, help="可选参数1")
    parser.add_argument("--opt2", type=str, help="可选参数2")

    ## 添加行为参数(action arguments)
    ## 
    parser.add_argument("--action1", action="store_true", help="行为参数1")
    parser.add_argument("--action2", action="store_true", help="行为参数2")

    ### 添加短参数
    parser.add_argument("-f", "-foo", type=str, help="短参数")

    parser.add_argument("--data", default="../data/510300.csv", required=False, help="Data to read in")
    parser.add_argument("--fromdate", default="", required=True, help='Date[time] in YYYY-MM-DD[THH:MM:SS] format')
    parser.add_argument("--todate", default="", required=True, help='Date[time] in YYYY-MM-DD[THH:MM:SS] format')

    ## 解析命令行参数
    return parser.parse_args(cmdargs)



if __name__ == "__main__":

    cmdargs = cmdargs_parse()

    print(cmdargs)
    print(cmdargs.arg1)
    print(cmdargs.arg2)
    
    print(cmdargs.opt1)
    print(cmdargs.opt2)

    print(cmdargs.f)